uniform	float4		screen_res;
uniform	sampler2D	s_occ;


half ssao_blur_ps(half2 centerTC)
{
  // low weight center sample - will be used on edges
   float  fSumWeight = 0.025f;
   float2 centerData = tex2D(s_occ, centerTC).xy;

   float  fOcclusion  = centerData.r * fSumWeight;
   float  centerDepth = centerData.g;

   float2 arrOffsets[4] = float2[]
   (
     float2( 1,-1),
     float2(-1,-1),
     float2( 1, 1),
     float2(-1, 1)
   );

  for(int i=0; i<4; i++)
  {
     float2 sampleTC   = centerTC + screen_res.zw * arrOffsets[i];
     float2 sampleData = tex2D(s_occ, sampleTC).xy;
	 
	 float fDepth  = sampleData.g;
	 float fDiff	  = 8*abs(fDepth-centerDepth)/min(fDepth,centerDepth);
     float fWeight = saturate(1-fDiff);

     fOcclusion += sampleData.r * fWeight;

     fSumWeight += fWeight;
  }

   fOcclusion /= fSumWeight;   

  return fOcclusion;
}
